package com.shrimpcolo.johnnytam.innerclass;

import javax.swing.plaf.synth.SynthSeparatorUI;

/**
 * 
 * @author Johnny Tam v0.1 不使用匿名内部类创建新实例
 */
public class TestNoNameInnerClass {

	public static void main(String[] args) {
		// //v0.1 普通的类
		// UseOneTimeClass onetime = new UseOneTimeClass("我是苦逼的人");
		// onetime.showInfo();
		//
		// // v0.1 简单的匿名内部类实现
		// UseOneTimeClass onetime02 = new UseOneTimeClass("haha ") {
		// private int number = 100;
		//
		// public void showInfo() {
		// System.out.println("我是二逼的人！！ " + number + "\t" + info);
		// }
		// };

		// onetime02.showInfo();

		// //v0.3.1 普通抽象类的子类实例化
		// Person person = new BabyChild();
		// person.eat();
		//
		// //v0.3.2 普通抽象类的子类实例化
		// Person youngChild = new YoungChild();
		// youngChild.eat();

		// v0.3.3 使用匿名内部类实现如上内容，并且不存在BabyChild类，以及YoungChild类
		// Person baby = new Person() {
		// @Override
		// public void eat() {
		// System.out.println("匿名内部类实现==> 婴儿 吸吮的吃！！！");
		// }
		// };
		// baby.eat();
		//
		// Person young = new Person(){
		//
		// @Override
		// public void eat() {
		// System.out.println("匿名内部类实现==> 小孩 狼吞虎咽 吃！！！");
		// }
		// };
		// young.eat();

		
		//v0.4 实现接口， 并使用不同的匿名内部类实现同一个接口
		//InterfaceFly interFly = new InterfaceFly()
		
		InterfaceFly interFly = new InterfaceFly() {

			@Override
			public void fly() {	
				System.out.println("我想像 蛤蟆 那样飞上天， 吃天鹅肉！！");				
			}
		};
		interFly.fly();
		
		InterfaceFly interBird = new InterfaceFly() {
			@Override
			public void fly() {	
				System.out.println("我想像 鸟儿那样 翱翔天际！！！");				
			}
		};
		interBird.fly();
		
		//... ... ...
		
	}

}
